package tanke;

import javax.swing.*;
import javax.xml.stream.events.EndElement;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;

//为了监听键盘事件
public class MyPanel extends JPanel implements KeyListener {


//定义我的坦克
    Herotanke hero=null;
//定义敌人坦克
    Vector<EmneyTank>enemyTank=new Vector<>();
   int enemyTanksize=3;
    public  MyPanel(){

        hero=new Herotanke(100,100);//初始化自己的坦克
        //初始化敌人的坦克
       for(int i=0;i<enemyTanksize;i++)
       {
           EmneyTank emneyTank = new EmneyTank(100 * (i + 1), 0);
           emneyTank.setDirect(2);
           enemyTank.add(emneyTank);



       }
        hero.setSpeed(10);
    }
     public void paint(Graphics g){
       super.paint(g);
         g.fillRect(0,0,1000,750);//填充矩形默认黑色
         //画出坦克的封装方法
         drawtank(hero.getX(), hero.getY(), g,hero.getDirect(),1);
         //画出敌人的坦克
         //遍历
              for(int i=0;i<enemyTanksize;i++){

                  EmneyTank tank=enemyTank.get(i);
                  drawtank(tank.getX(),tank.getY(),g,tank.getDirect(),0);
              }
//         drawtank(hero.getX()+60, hero.getY(), g,0,0);

     }



     //x 坦克的坐上角x的坐标
    //y 坦克左上角的y的坐标
    // g 画笔
    //direck 坦克的上下左右
    //type 坦克类型


   public void drawtank(int x,int y,Graphics g,int direck,int type){

       switch(type){
           case 0://我们的坦克
               g.setColor(Color.cyan);
               break;
           case 1://敌人的坦克
               g.setColor(Color.yellow);
               break;

       }

       //让坦克动起来



//根据坦克的方向，来绘制坦克
       switch (direck)
       {

               case 0: // 向上
                   g.fill3DRect(x, y, 10, 60, false);         // 左轮
                   g.fill3DRect(x + 30, y, 10, 60, false);    // 右轮
                   g.fill3DRect(x + 10, y + 10, 20, 40, false); // 盖子
                   g.fillOval(x + 10, y + 20, 20, 20);        // 圆形盖
                   g.drawLine(x + 20, y + 30, x + 20, y);     // 炮筒向上
                   break;
               case 1: // 向右
                   g.fill3DRect(x, y, 60, 10, false);         // 上轮
                   g.fill3DRect(x, y + 30, 60, 10, false);    // 下轮
                   g.fill3DRect(x + 10, y + 10, 40, 20, false); // 横向盖子
                   g.fillOval(x + 20, y + 10, 20, 20);        // 圆形盖
                   g.drawLine(x + 30, y + 20, x + 60, y + 20); // 炮筒向右
                   break;
               case 2: // 向下
                   g.fill3DRect(x, y, 10, 60, false);         // 左轮
                   g.fill3DRect(x + 30, y, 10, 60, false);    // 右轮
                   g.fill3DRect(x + 10, y + 10, 20, 40, false);
                   g.fillOval(x + 10, y + 20, 20, 20);
                   g.drawLine(x + 20, y + 30, x + 20, y + 60); // 炮筒向下
                   break;
               case 3: // 向左
                   g.fill3DRect(x, y, 60, 10, false);         // 上轮
                   g.fill3DRect(x, y + 30, 60, 10, false);    // 下轮
                   g.fill3DRect(x + 10, y + 10, 40, 20, false);
                   g.fillOval(x + 20, y + 10, 20, 20);
                   g.drawLine(x + 30, y + 20, x, y + 20);     // 炮筒向左
                   break;
               default:
                   System.out.println("未知方向");
           }
       }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override//处理wdsa键按下的情况
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_W){
            hero.setDirect(0);
            hero.moveUp();
        }
        //改变方向

        else if(e.getKeyCode()==KeyEvent.VK_D){
            hero.setDirect(1);
        hero.moveRight();
        }
        else if(e.getKeyCode()==KeyEvent.VK_S){

            hero.setDirect(2);
            hero.moveDown();
        }
        else if(e.getKeyCode()==KeyEvent.VK_A){

            hero.setDirect(3);
            hero.moveLeft();
        }
        this.repaint();
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}

